package com.siashan.unipay4j.ali;

import com.siashan.unipay4j.core.Configuration;
import lombok.extern.slf4j.Slf4j;

/**
 * 支付宝支付配置文件
 *
 *
 * @author siashan
 * @since v1.0.1
 */
@Slf4j
public class AliConfiguration {

    private static Configuration configuration = Configuration.getInstance();

    /**
     * 获取开发者第三方用户唯一凭证
     *
     * @return 第三方用户唯一凭证
     */
    public static String getAppId() {
        return configuration.getProperty("siashan.unipay4j.ali.config.appId");
    }

    /**
     * 获取签名加密算法
     *
     * @return 签名加密算法
     */
    public static String getSignType() {
        String signType = configuration.getProperty("siashan.unipay4j.ali.config.signType");
        return signType == null ? "RSA2" : signType;
    }

    /**
     * 获取商户私钥
     *
     * @return 商户私钥
     */
    public static String getMerchantPrivateKey() {
        return configuration.getProperty("siashan.unipay4j.ali.config.merchantPrivateKey");
    }

    /**
     * 获取支付宝公钥
     *
     * @return 支付宝公钥
     */
    public static String getAlipayPublicKey() {
        return configuration.getProperty("siashan.unipay4j.ali.config.alipayPublicKey");
    }

    /**
     * 获取 报文格式
     *
     * @return 报文格式
     */
    public static String getFormat() {

        String format = configuration.getProperty("siashan.unipay4j.ali.config.format");
        return format == null ? "json" : format;
    }

    /**
     * 获取 报文编码
     *
     * @return 报文编码
     */
    public static String getCharset() {
        String charset = configuration.getProperty("siashan.unipay4j.ali.config.charset");
        return charset == null ? "utf-8" : charset;
    }

    /**
     * 获取 网关地址
     *
     * @return 网关地址
     */
    public static String getGatewayUrl() {
        String gateway = configuration.getProperty("siashan.unipay4j.ali.config.gatewayUrl");
        return gateway == null ? "https://openapi.alipay.com/gateway.do" : gateway;
    }

    /**
     * 获取 回调地址
     *
     * @return 回调地址
     */
    public static String getNotifyUrl() {
        return configuration.getProperty("siashan.unipay4j.ali.config.notifyUrl");
    }


    /**
     * 是否使用公钥证书方式请求
     *
     * @return true/false
     */
    public static boolean getUseCert(){
        String useCert =configuration.getProperty("siashan.unipay4j.ali.config.userCert");
        return Boolean.valueOf(useCert == null ? "false" : useCert);
    }

    /**
     * 获取应用公钥证书文件本地路径。
     *
     * @return 应用公钥证书文件本地路径
     */
    public static String getAppCertPath() {
        return configuration.getProperty("siashan.unipay4j.ali.config.appCertPath");
    }

    /**
     * 获取支付宝公钥证书文件本地路径。
     *
     * @return 支付宝公钥证书文件本地路径
     */
    public static String getAlipayCertPath() {
        return configuration.getProperty("siashan.unipay4j.ali.config.alipayCertPath");
    }

    /**
     * 获取支付宝根证书文件本地路径。
     *
     * @return 支付宝根证书文件本地路径
     */
    public static String getAlipayRootCertPath() {
        return configuration.getProperty("siashan.unipay4j.ali.config.alipayRootCertPath");
    }



}
